// 🔐 登录安全验证测试脚本
// 可以在微信开发者工具控制台中运行，验证登录保护机制是否正常工作

console.log('🔐 开始登录安全验证测试...')

async function testLoginSecurity() {
  try {
    console.log('\n=== 🧪 第一阶段：基础登录状态检查 ===')
    
    // 1. 检查本地登录状态
    const isLoggedIn = wx.getStorageSync('isLoggedIn')
    const userInfo = wx.getStorageSync('userInfo')
    
    console.log('📱 本地登录状态:')
    console.log(`  登录标志: ${isLoggedIn ? '✅ true' : '❌ false'}`)
    console.log(`  用户信息: ${userInfo ? '✅ 存在' : '❌ 不存在'}`)
    console.log(`  OpenID: ${userInfo?.openid ? '✅ 存在' : '❌ 不存在'}`)
    
    // 2. 检查微信session
    console.log('\n🔍 检查微信session状态...')
    const sessionValid = await new Promise((resolve) => {
      wx.checkSession({
        success: () => {
          console.log('✅ 微信session有效')
          resolve(true)
        },
        fail: () => {
          console.log('❌ 微信session已过期')
          resolve(false)
        }
      })
    })
    
    console.log('\n=== 🧪 第二阶段：云函数验证测试 ===')
    
    // 3. 测试用户管理云函数
    console.log('☁️ 测试用户管理云函数...')
    let cloudUserValid = false
    let cloudUserInfo = null
    
    try {
      const result = await wx.cloud.callFunction({
        name: 'userManager',
        data: {
          action: 'getUserInfo'
        }
      })
      
      if (result.result.success) {
        cloudUserValid = true
        cloudUserInfo = result.result.userInfo
        console.log('✅ 云端用户验证成功:', cloudUserInfo.nickName || cloudUserInfo.openid)
      } else {
        console.log('❌ 云端用户验证失败:', result.result.error)
      }
    } catch (error) {
      console.log('❌ 云函数调用异常:', error.message)
    }
    
    console.log('\n=== 🧪 第三阶段：页面保护机制测试 ===')
    
    // 4. 测试订单页面保护
    console.log('📋 测试订单页面保护机制...')
    
    const orderPageProtected = await testPageProtection('orders')
    console.log(`订单页面保护: ${orderPageProtected ? '✅ 有效' : '❌ 无效'}`)
    
    // 5. 测试项目页面保护  
    console.log('🏗️ 测试项目页面保护机制...')
    
    const projectPageProtected = await testPageProtection('projects')
    console.log(`项目页面保护: ${projectPageProtected ? '✅ 有效' : '❌ 无效'}`)
    
    console.log('\n=== 📊 测试结果汇总 ===')
    
    const testResults = {
      localLogin: isLoggedIn && userInfo && userInfo.openid,
      wechatSession: sessionValid,
      cloudUser: cloudUserValid,
      orderPageProtection: orderPageProtected,
      projectPageProtection: projectPageProtected
    }
    
    console.log('🔐 登录安全验证结果:')
    Object.entries(testResults).forEach(([key, value]) => {
      const status = value ? '✅ 通过' : '❌ 失败'
      const keyName = {
        localLogin: '本地登录状态',
        wechatSession: '微信Session',
        cloudUser: '云端用户验证',
        orderPageProtection: '订单页面保护',
        projectPageProtection: '项目页面保护'
      }[key]
      console.log(`  ${keyName}: ${status}`)
    })
    
    // 综合评估
    const allPassed = Object.values(testResults).every(result => result === true)
    const loginValid = testResults.localLogin && testResults.wechatSession && testResults.cloudUser
    
    console.log('\n🎯 综合评估:')
    
    if (allPassed) {
      console.log('🎉 所有测试通过！登录保护机制运行正常')
      
      if (loginValid) {
        console.log('✅ 用户已正确登录，可以正常使用所有功能')
        
        wx.showModal({
          title: '🎉 测试通过',
          content: '登录保护机制运行正常！\n\n✅ 用户已正确登录\n✅ 页面保护有效\n✅ 数据安全可靠',
          showCancel: false,
          confirmText: '太好了！'
        })
      } else {
        console.log('⚠️ 用户未登录，保护机制正确阻止了数据访问')
        
        wx.showModal({
          title: '🔐 保护生效',
          content: '登录保护机制正常工作！\n\n❌ 用户未登录\n✅ 已正确阻止数据访问\n✅ 安全机制有效',
          showCancel: false,
          confirmText: '了解了'
        })
      }
    } else {
      console.log('⚠️ 发现问题，部分测试失败')
      
      const failedTests = Object.entries(testResults)
        .filter(([key, value]) => !value)
        .map(([key]) => key)
      
      wx.showModal({
        title: '⚠️ 发现问题',
        content: `部分安全测试失败：\n\n${failedTests.join(', ')}\n\n请检查相关功能是否正常`,
        showCancel: false,
        confirmText: '知道了'
      })
    }
    
    console.log('\n📋 建议操作:')
    
    if (!loginValid) {
      console.log('🔗 建议前往个人中心页面进行登录')
      console.log('📱 使用微信登录功能完成身份验证')
    } else {
      console.log('✅ 当前登录状态正常，可以安全使用所有功能')
    }
    
  } catch (error) {
    console.error('❌ 测试过程中发生错误:', error)
    
    wx.showModal({
      title: '测试异常',
      content: '登录安全测试过程中发生错误：' + error.message,
      showCancel: false
    })
  }
}

// 测试页面保护机制
async function testPageProtection(pageName) {
  try {
    // 这里可以测试页面的保护逻辑
    // 由于无法直接调用页面方法，我们通过检查本地数据来推测
    
    const isLoggedIn = wx.getStorageSync('isLoggedIn')
    const userInfo = wx.getStorageSync('userInfo')
    
    // 如果用户未登录，页面应该被保护
    if (!isLoggedIn || !userInfo) {
      return true // 保护机制应该生效
    }
    
    // 如果用户已登录，检查是否能正常访问数据
    const sessionValid = await new Promise((resolve) => {
      wx.checkSession({
        success: () => resolve(true),
        fail: () => resolve(false)
      })
    })
    
    return sessionValid // session有效时应该能访问
    
  } catch (error) {
    console.error(`测试${pageName}页面保护失败:`, error)
    return false
  }
}

// 启动测试
testLoginSecurity()

console.log('\n💡 提示：')
console.log('1. 如果测试显示用户未登录，请前往个人中心页面登录')
console.log('2. 登录后可以重新运行此测试验证功能')
console.log('3. 测试结果将显示在控制台和弹窗中')
console.log('4. 所有敏感页面都应该有登录保护') 